package ext;

import java.io.File;
import java.net.URI;
import java.nio.file.Path;
import java.nio.file.Paths;

public class PathSample {

    public static void main(String[] args) {
        Path relPath = Paths.get("../readme.md");
        Path dirPath = Paths.get("C:\\Windows\\System32");
        Path filePath = Paths.get("C:\\Windows\\System32", "cmd.exe");
        // =================================
        // 1. getFileName 如果是文件则返回文件名称, 如果是目录则返回目录名称
        // =================================
        // ===> System32
        Path dirFileName = dirPath.getFileName();
        // ===> cmd.exe
        Path fileName = filePath.getFileName();
        // =================================
        // 2. getName 获取路径名称的Path实例. 根目录的索引是0, 最后一个路径的索引是路径元素的个数-1
        // =================================
        // ===> Windows
        Path fileRootDirName = filePath.getName(0);
        // ===> cmd.exe
        Path fileNamePath = filePath.getName(2);
        // =================================
        // 3. getRoot 获取根路径
        // =================================
        // ===> C:\
        Path root = filePath.getRoot();
        // =================================
        // 4. getParent 获取父目录路径
        // =================================
        // ===> C:\Windows\System32
        Path parent = filePath.getParent();
        // =================================
        // 5. getNameCount 获取路径元素的数量
        // =================================
        // ===> 3
        int nameCount = filePath.getNameCount();
        // =================================
        // 6. isAbsolute 判断是否为绝对路径
        // =================================
        // ===> false
        boolean absolute = relPath.isAbsolute();
        // ===> true
        absolute = filePath.isAbsolute();
        // =================================
        // 7. startsWith/endsWith 判断起始和结束路径
        // =================================
        // ===> true
        boolean starts = filePath.startsWith("C:\\Windows\\System32");
        // ===> true
        starts = filePath.startsWith(Paths.get("C:\\Windows\\System32"));
        // ===> true
        boolean ends = filePath.endsWith("cmd.exe");
        // ===> true
        ends = filePath.endsWith(Paths.get("cmd.exe"));
        // =================================
        // 8. iterator 迭代路径的元素, 从根目录开始
        // =================================
        // 或者 while (filePath.iterator().hasNext())
        // ===> Windows
        // ===> System32
        // ===> cmd.exe
        for (Path next : filePath) {
            System.out.println(next);
        }
        // =================================
        // 9. toFile/toUri/toString
        // =================================
        File file = filePath.toFile();
        URI uri = filePath.toUri();
        String pathStr = filePath.toString();
    }

}